// select 多路复用
/*
select 默认是阻塞的，只有当监听的 channel 中发送或接收可以进行时才会运行，
当多个 channel 都准备好的时候，select 是随机的选择一个执行的。

default 是当监听的 channel 都没有准备好的时候，默认执行（select 不再阻塞等待 channel）。
*/
package main

import "fmt"
import "time"

func main() {
	ch := make(chan int)
	go func() {
		ch <- 10
	}()
	fmt.Println(time.Second)
	time.Sleep(time.Second)

	select{
	case <- ch:
		fmt.Println("come to read channel")
	default:
		fmt.Println("come to default")
	}
}